sig Curso{}
sig EspecializacaoTEC extends Curso{}
sig Curso1Ciclo extends Curso{}
sig MestradoInt extends Curso{}

sig ECTS{}


sig Aluno{
	matriculado: one Curso,
	inscricoes : UnidadeCurricular -> some ECTS,
	inscricoes_passadas : some UnidadeCurricular
}

sig UnidadeCurricular{}

pred ECTSAnuais[a: Aluno]{
	#(~(a.inscricoes).(UnidadeCurricular - a.inscricoes_passadas))<=60
	#(~(a.inscricoes).(a.inscricoes_passadas))<=18
}


pred Inv[a: Aluno]{
	a.matriculado = Curso1Ciclo => ECTSAnuais[a]
}
